import axios from 'axios'
import router from '../router'
import {
	MessageBox,
	Message
} from 'element-ui'
import store from '@/store'
import {
	getToken,
	// getProjectID
} from '@/utils/auth'
import {
	ip
} from '../api/myFunction.js'

const service = axios.create({
	baseURL: ip.substring(0, (ip.length - 1)),
	// baseURL: 'http://116.63.174.78:9001', // process.env.VUE_APP_BASE_API, // url = base url + request url
	// baseURL: 'http://qzls-scs.natapp1.cc', // process.env.VUE_APP_BASE_API, // url = base url + request url
	// withCredentials: true, // send cookies when cross-domain requests
	// timeout: 5000 // request timeout
})

// request interceptor
service.interceptors.request.use(
	config => {
		if (store.getters.token) {
			config.headers['token'] = getToken();
			// config.headers['projectId'] = getProjectID()
		}
		return config
	},
	error => {
		return Promise.reject(error)
	}
)

service.interceptors.response.use(
	response => {
		const res = response.data
		if (res.code !== 200) {
			if (res.data) {
				Message({
					message: res.data.join('，'),
					type: 'warning',
					duration: 5000
				})
			} else {
				Message({
					message: res.message === '系统异常' ? '数据获取失败，请稍后再试' : res.message,
					type: 'warning',
					duration: 5000
				})
			}
			// return false
			return Promise.reject(new Error(res.message || 'Error'))
		} else {
			return res
		}
	},
	error => {
		if (JSON.stringify(error).indexOf('401') !== -1 || JSON.stringify(error).indexOf('203') !== -1) {
			store.dispatch('user/logout').then(() => {
				Message({
					message: '登录失效，请重新登录',
					type: 'error',
					duration: 5000
				})
				router.push('/login')
			})
		} else {

		}
		return Promise.reject(error)
	}
)

export default service


// 200   操作成功
// 401   非法访问
// 203   未登录或登录已过期
// 403   没有权限
// 404   你请求的资源不存在
// 500   操作失败
// 4000   登录失败
// 5000   系统异常
// 5001   请求参数校验异常
// 5002   请求参数解析异常
// 5003   HTTP
// 5100   系统处理异常
// 5101   业务处理异常
// 5102   数据库处理异常
// 5103   验证码校验异常
// 5104   登录授权异常
// 5105   没有访问权限
// 5106   没有访问权限
